#include<stdio.h>
#include<math.h>

long long gcd(long long a, long long b) { // X / i 可能计算出一个超出 int 范围的数
    return b ? gcd(b, a % b) : a;
}

int main() {
    int x, y, i, ans = 0; 
    scanf("%d%d", &x, &y);
    long long X = x * 1ll * y; // x*y <= 10^{10}，可能会爆 int
    int sqrtX = sqrt(X); // 预先计算出 根号X
    for(i = 1;i<=sqrtX;i++) {
        if(X % i) continue; // 如果 X 不是 i 的倍数显然不可能成立
        if(gcd(i, X / i) != x) continue; // 判定 gcd 是否为 x
        if(i != X / i) ans += 2; // i 和 X/i 不同，则 (i,X/i) 和 (X/i,i) 是两对合法解
        else ans += 1; // i 和 X/i 相同，则 (i,X/i) 和 (X/i,i) 是同一对解
    }
    printf("%d", ans);
}